package com.polaris.live.im.sfs.bean.chat

import com.polaris.live.im.db.entity.SessionEntity
import com.polaris.live.im.sfs.core.bean.AbstractMessage
import com.polaris.live.common.cacha.UserManager

/**
 * 接收的私聊消息
 *
 * @author Created by lucas on 2023/10/20 14:19
 */
data class ReceiveSingleMessage(
    /**
     * 消息id
     */
    override val msgId: String,
    /**
     * 消息类型
     */
    val command: String,
    /**
     * 序列id，由后台返回
     */
    val seqId: Long?,
    /**
     * 发送者
     * <p>
     * 如果id与接收者一直则说明是反转消息
     * <p>
     * 如果等于0则说明是系统消息
     */
    val sender: Long,
    /**
     * 对方发送的消息内容
     */
    val message: SingleMessage,
    /**
     * 与对方的聊天等级
     */
    val hotLevel: Int?,
    /**
     * 额外的信息，json
     */
    val parameter: String?,
    /**
     * 翻译过后的文本
     */
    val translateContent: String?,
    /**
     * 如果是系统消息则为0
     */
    val recipient: Long,
    /**
     * 消息类型
     */
    val type: Long
) : AbstractMessage {

    @Transient
    var newSessionEntity: SessionEntity? = null

    /**
     * 获取对方的id
     */
    fun getOtherId(): Long {
        return if (UserManager.getUserId() == sender) {
            recipient
        } else {
            sender
        }
    }

    fun isStranger(): Boolean {
        return newSessionEntity?.isStranger() ?: true
    }
}